#pragma once
class VoxNode
{
public:
    VoxNode();
    ~VoxNode();

private:
    VoxNode* m_pChild;
    VoxNode* m_pSib;

    UINT8   m_Color[4]; // color of the voxel node
    UINT8   m_SibId;    //  id of this voxel within the 8 siblings, bit 0:x, 1:y, 2:z

};

VoxNode::VoxNode()
{
    m_pChild = 0;
    m_pSib = 0;
    m_SibId = 0;

    for (int i = 0; i < 4; i++)
        m_Color[i] = 0;
}

VoxNode::~VoxNode()
{
}

class VoxOctree
{
public:
    VoxOctree(void);
    ~VoxOctree(void);

    VoxNode* RayIntersect();
private:
    VoxNode* m_pRoot;

};

